#include <iostream>
#include <unistd.h>
#include <vector>
#include "Thread.hpp"     // 引入自定义的线程类

using namespace std;

// 测试用的线程函数
// 无限循环打印信息，每秒一次
void Print()
{
    while(true)
    {
        printf("haha, 我是一个封装的线程...\n");
        sleep(1);    // 休眠1秒
    }
}

int main()
{
    // 创建线程容器
    std::vector<Thread> threads;

    // 创建10个线程对象
    // 每个线程都执行Print函数
    for(int i = 0 ;i < 10; i++)
    {
        threads.push_back(Thread(Print));  // 构造Thread对象并存入vector
    }

    // 启动所有线程
    for(auto &t : threads)
    {
        t.Run();    // 调用每个线程的Run方法启动线程
    }

    // 等待所有线程结束
    for(auto &t : threads)
    {
        t.Join();   // 调用每个线程的Join方法等待线程结束
    }

    // 以下是单线程测试代码（已注释）
    // Thread t(Print);    // 创建单个线程对象
    // t.Run();           // 启动线程

    // 输出线程状态信息（已注释）
    // cout << "是否启动成功: " << t.IsRunning() << endl;      // 检查线程是否正在运行
    // cout << "启动成功时间戳: " << t.StartTimestamp() << endl; // 获取线程启动时间戳
    // cout << "线程的名字: " << t.Name() << endl;              // 获取线程名称

    // t.Join();          // 等待线程结束（已注释）

    return 0;
}